/*
 * Projekt: GMU 2013 - Canny hranovy detektor OpenCL/CUDA
 * Autori: Pavel Nevrala - xnevra00 (xnevra00@stud.fit.vutbr.cz)
 *         Martin Jurak - xjurak02 (xjurak02@stud.fit.vutbr.cz)
 */
#pragma once

#include "cannypartsbase.h"

/*
 * class NonMaxSupCL
 * Trida starajici o nastaveni kernelu pro hledani lokalnich maxim v obrazu
 * (ztenceni hran).  
 */

class NonMaxSupCL :
	public CannyPartsBase
{
public:
	NonMaxSupCL(cl_uint maxWorkGroupP, cl_float *edgesDirectionP, cl_context *contextP, cl_command_queue *commandQueueP, cl_program *programP);
	~NonMaxSupCL(void);

	/*
	 * Provede nastaveni OpenCl a kernelu pro hledani lokalnich maxim v obrazu
	 * @image - vstupni obraz
	 * @width - sirka obrazu
	 * @height - vyska obrazu	 
	 * @return - doba vypoctu na GPU
	 */
	virtual double run(cl_float *image, cl_uint width, cl_uint height);

private:
	// smer gradientu jeddnotlivych pixelu
	cl_float *edgesDirection;
	// opencl context
	cl_context *context;
	// command queue
	cl_command_queue *commandQueue;
	// zkompilovny opencl program
	cl_program *program;	
};

